Skip to content

ci(release): publish from CI with trusted publishing, one tag and release - #41

Merged
Madraka merged 1 commit into
mainfrom
ci/release-from-ci
Oct 21, 2026
Merged

Madraka merged 1 commit into
mainfrom
ci/release-from-ci

Conversation

@Madraka

@Madraka Madraka commented Oct 21, 2026

Copy link
Copy Markdown
Contributor

Moves releases from the maintainer's laptop to CI (internal release-process review, decisions of 2026-10-21).

Flow (.github/workflows/release.yml, still gated by RELEASE_ENABLED)

  1. version: the Changesets action opens/updates the release PR. No publishing here.
  2. plan: after the merge, publish-ci.ts --plan asks npm which of the 13 packages lack the new version.
  3. publish: waits for the npm-publish environment (required reviewer: the maintainer; branch main only, both already configured), then scripts/publish-ci.ts:
    • build-packages --check, then smoke-pack.ts --tarballs: build, pack, install from scratch with npm, cloudhal dev, deploy --dry-run;
    • npm publish <tarball> --provenance for exactly those tarballs, npm 12, trusted publishing (OIDC), --ignore-scripts;
    • waits until npm serves all 13;
    • one vX.Y.Z tag and one GitHub Release, notes from the changelogs without dependency-only lines.
      Re-runs skip what npm already has and an existing tag/release.

Hardening: top-level permissions: {}, per-job grants, third-party actions pinned by SHA, persist-credentials: false where no push is needed.

Before turning it on (maintainer): trusted-publisher entries on npmjs.com for the 13 packages; allow GitHub Actions to create PRs (org + repo); then RELEASE_ENABLED=true. 0.3.5 is the first CI release.

Tests: packages/cli/test/release-plan.test.ts (fixed-group version, publish order, release notes). CONTRIBUTING: new "Releasing" section.

🤖 Generated with Claude Code

…ease

The Changesets action now only opens the release PR. After it merges, a
publish job waits for the npm-publish environment's approval, then
scripts/publish-ci.ts smoke-tests the packed tarballs, publishes exactly
those with npm trusted publishing (OIDC, provenance), waits until npm
serves all 13, and creates one vX.Y.Z tag and GitHub Release with notes
built from the changelogs (dependency-only lines dropped). Re-runs skip
what is already done. Top-level permissions are empty, third-party
actions are pinned by SHA. Still gated by RELEASE_ENABLED.

CONTRIBUTING gains a Releasing section.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Signed-off-by: Madraka <[email protected]>
@Madraka
Madraka merged commit c943e78 into main Oct 21, 2026
6 checks passed
@Madraka
Madraka deleted the ci/release-from-ci branch October 21, 2026 11:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant